// miniprogram/pages/mine/mine.js
const db = wx.cloud.database()
const app=getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    nickName : "小喵喵",
    logged : false,
    disabled : true,
    id : '',
    canIUseGetUserProfile:false,
   userPhoto:"https://dimg11.c-ctrip.com/images/0205z120008dr4pxv9C7E_R_300_120.jpg"
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    if(wx.getUserProfile){
      this.setData({
        canIUseGetUserProfile:true
      })
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady:function(){
    this.getLocation();
    wx.cloud.callFunction({
      name:'login',
      data:{}
    }).then((res)=>{
      db.collection('users').where({
        _openid:res.result._openid
      }).get().then((res)=>{
        if(res.data.length){
          app.userInfo=Object.assign(app.userInfo,res.data[0])
          this.setData({
            userPhoto:app.userInfo.userPhoto,
            nickName:app.userInfo.nickName,
            logged:true,
            id:app.userInfo._id
          })
          this.getMessage()
        }else{
          this.setData({
            disabled:false
          })
        }
      })
    })
  },
 
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.setData({
      userPhoto:app.userInfo.userPhoto,
      nickName:app.userInfo.nickName,
      id:app.userInfo._id
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认
    // 开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '需要获取您的信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        let userInfo = res.userInfo;
      }
    })
  },
  bindGetUserInfo(ev){
    let userInfo = ev.detail.userInfo;
  if(!this.data.logged&&userInfo){
    db.collection('users').add({
      data:{
        userPhoto: userInfo.avatarUrl,
        nickName: userInfo.nickName,
        signature : '',
        phoneNumber : '',
        weixinNumber : '',
        links : 0,
        time : new Date(),
        isLocation:true,
        longitude:this.longitude,
        latitude:this.latitude,
        location:db.Geo.Point(this.longitude,this.latitude),
        friendList:[]
      }
    }).then((res)=>{
      db.collection('users').doc(res._id).get().then((res)=>{
        app.userInfo=Object.assign(app.userInfo,res.data)
       this.setData({
         userPhoto:app.userInfo.userPhoto,
         nickName:app.userInfo.nickName,
         logged:true,
         id:app.userInfo._id
       })
      })
    })
  }
 },
  getUserInfo(e) {
    // this.setData({
    //   userInfo: e.detail.userInfo
    // })
  },
  getMessage(){
    db.collection('message').where({
      userId:app.userInfo._id
    }).watch({
      onChange:function(snapsh){
        if(snapsh.docChanges.length){
          let list=snapsh.docChanges[0].doc.list;
          if(list.length){
            wx.showTabBarRedDot({
              index: 2
            })
            app.userMessage=list
          }else{
            wx.hideTabBarRedDot({
              index: 2,
            })
            app.userMessage=[]
          }
        }
      },
      onError:function(err){
        console.error('the watch closed because of error',err);
      }
    })
  },
  getLocation(){
    wx.getLocation({
      type: 'gcj02 ',
      success: (res)=> {
        this.latitude = res.latitude
        this.longitude = res.longitude
      }
     })
  }
})
